HTTP请求消息和HTTP响应消息一样,也分为三部分,分别是请求行、请求消息头、消息正文。
获取请求行消息
HTTP请求信息中的第一行为请求行,格式如下:
GET /webdemo/servlet/HelloWorld?name=bill&age=52 HTTP/1/1
上面的请求行分为三部分,分别是请求方式(GET、POST、HEAD等)、资源路径和HTTP协议版本。
HttpServletRequest接口中定义了很多方法获取请求行中各部分的消息:
方法名 | 功能 | 值 |
---|---|---|
getMethod | 返回请求行中的请求方法(GET、POST、HEAD、PUT、DELETE) | GET |
getRequestURI | 返回请求行中的资源部分(不包含参数) | /webdemo/servlet/HelloWorld |
getQueryString | 返回请求行中的参数部分,也就是资源路径后面的“?”以后的所有内容,如果没有参数部分,返回null | name=bill&age=52 |
getProtocol | 返回请求行中的协议部分 | HTTP/1.1 |
getContextPath | 返回Web应用程序的上下文路径 | /webdemo |
getServletPath | 返回web.xml中<url-pattern> 标签定义的Servlet映射路径 |
/servlet/HelloWorld |
getParameter | 返回某一个参数的值,如获得name参数值得代码是getParameter(“name”) | bill |
获取网络连接消息
为了获取客户端和服务器与网络连接有关的信息,主要有以下一些方法:
方法名 | 功能 | 返回值 |
---|---|---|
getRemoteAddr | 返回客户机用于发送请求的IP地址 | 192.168.18.10 |
getRemoteHost | 返回发出请求的客户机的主机名,如果Servlet无法解析,则返回客户机的IP | 192.168.181.0 |
getRemotePort | 返回客户机所使用的网络接口的端口号(这个值是由客户机的网络接口随机分配的) | 1065 |
getLocalAddr | 返回Web服务器上接收请求的网络接口使用的IP地址 | 192.168.18.254 |
getLocalName | 返回Web服务器上接收请求的网络接口使用的IP地址对应的主机名 | webserver |
getLocalPort | 返回Web服务器上接收请求的网络接口的端口号 | 8080 |
getServerName | 返回HTTP请求消息的Host字段的值的主机名部分 | localhost |
getServerPort | 返回HTTP请求消息的Host字段的值的端口号部分 | 8080 |
getScheme | 返回请求的协议名,如http、https | http |
getRequestURL | 返回完整的请求URL(不包含参数部分),这个方法返回的是StringBuffer类型,而不是String类型 | http://localhost:8080/webdemo/servlet/HelloWorld |